A virtual machine (VM) is a software implementation of a machine that executes programs like a physical machine. Virtualization software allows multiple VMs with separate operating systems to run in isolation on the same physical server. Each VM may have its own set of virtual hardware (e.g., RAM, CPU, NIC, etc.) upon which an operating system and applications are loaded. The operating system may see a consistent, normalized set of hardware regardless of the actual physical hardware components. A virtual center may operate to control virtual machines in data centers and, for example, in connection with cloud computing. The virtual center may further include a virtual data center that provides logical control and management of data storage in a data center, and provides for sub-dividing contents of virtual components into compute resources, network resources and storage resources.
Configuring and deploying VMs is known in the field of computer science. For example, U.S. Pat. No. 7,577,722 to Khandekar, et al., entitled “Provisioning of Computer Systems Using Virtual Machines,” which is incorporated herein by reference, discloses techniques for configuring and deploying a VM according to user specifications. VMs may be provisioned with respect to any appropriate resource, including, for example, storage resources, CPU processing resources and/or memory. Operations of VMs may include using virtual machine images. A VM that may be moved between different locations and processing thereafter continued without interruption. Reference is made to U.S. Pat. No. 8,667,490 B1 to van der Goot, entitled “Active/Active Storage and Virtual Machine Mobility Over Asynchronous Distances,” which is incorporated herein by reference.
Multiple VMs may be provided in a system that includes storage that is managed by a virtual data storage cluster engine, such as the VPLEX system provided by EMC Corporation of Hopkinton, Mass. The virtual data storage cluster engine provides a front end interface to the VMs that appears to the VMs as a local data storage array while providing a back end interface to volumes that contain data. A volume accessed by the virtual data storage cluster engine on behalf of a VM may be on the same site as the VM or may be on a different site and the physical location of data accessed by a VM may be transparent to the VM. The virtual data storage cluster engine may also provide caching for the storage data that is accessed, where data that is accessed frequently and/or recently is stored in relatively faster memory that may be volatile.
A drawback to using a virtual data storage cluster engine is that it results in additional overhead. However, without centralized management of data access like that provided by a virtual data storage cluster engine, data caching may be difficult in a system where multiple VMs on multiple sites access data both locally and on different sites. Accordingly, it is desirable to provide a distributed system that avoids at least some of the overhead associated with a virtual data storage cluster engine without eliminating or reducing the availability of data caching.